package com.wb.utils

import java.util.HashMap

/**
 * 自定义内容返回模板
 *
 * @author 祁雪
 */
class Status {
    /**
     * 返回码
     */
    private var code = 0

    /**
     * 返回消息
     */
    private var msg: String? = null

    /**
     * 返回数据
     */
    private var data: Any? = null

    constructor()

    constructor(code: Int, msg: String?, data: Any?) {
        this.code = code
        this.msg = msg
        this.data = data
    }

    override fun toString(): String {
        return "MyResult [code=$code, msg=$msg, data=$data]"
    }

    companion object {

        /**
         * 默认返回码名称
         */
        private val CODE = "code"

        /**
         * 默认成功返回码
         */
        private val CODE_SUCCESS = 200

        /**
         * 默认失败返回码
         */
        private val CODE_ERROR = 500

        /**
         * 默认返回消息名称
         */
        private val MSG = "msg"

        /**
         * 默认成功返回消息
         */
        private val MSG_SUCCESS = "请求成功!"

        /**
         * 默认失败返回消息
         */
        private val MSG_ERROR = "请求失败!"

        /**
         * 默认返回状态名称
         */
        private val SUCCESS = "success"

        /**
         * 默认成功返回状态
         */
        private val SUCCESS_SUCCESS = true

        /**
         * 默认失败返回状态
         */
        private val SUCCESS_ERROR = false

        /**
         * 请求成功
         * code : 200
         */
        fun success(): Status {
            return Status(CODE_SUCCESS, MSG_SUCCESS, null)
        }

        /**
         * 请求成功
         * code : 200 msg : 传入
         */
        fun success(msg: String?): Status {
            return Status(CODE_SUCCESS, msg, null)
        }

        /**
         * 请求成功
         * code : 200 data : 传入
         */
        fun success(data: Any?): Status {
            return Status(CODE_SUCCESS, MSG_SUCCESS, data)
        }

        /**
         * 请求成功
         * code : 200 data : 传入 msg : 传入
         */
        fun success(msg: String?, data: Any?): Status {
            return Status(CODE_SUCCESS, msg, data)
        }

        /**
         * 请求成功
         * code : 传入  data : 传入 msg : 传入
         */
        fun success(code: Int, msg: String?, data: Any?): Status {
            return Status(code, msg, data)
        }

        /**
         * 请求失败
         * code : 500 , msg : 请求失败
         */
        fun error(): Status {
            return Status(CODE_ERROR, MSG_ERROR, null)
        }

        /**
         * 请求失败
         * code : 500 msg : 传入
         */
        fun error(msg: String?): Status {
            return Status(CODE_ERROR, msg, null)
        }

        /**
         * 请求失败
         * code : 500 data : 传入
         */
        fun error(data: Any?): Status {
            return Status(CODE_ERROR, MSG_ERROR, data)
        }

        /**
         * 请求失败
         * code : 500 data : 传入 msg : 传入
         */
        fun error(msg: String?, data: Any?): Status {
            return Status(CODE_ERROR, msg, data)
        }

        /**
         * 请求失败
         * code :传入  500 : 传入  data : 传入 msg : 传入
         */
        fun error(code: Int, msg: String?, data: Any?): Status {
            return Status(code, msg, data)
        }

        //=============返回成功or错误消息Map success:true code:"200" msg:"请求成功！"===========================
        //=============返回成功or错误消息Map success:true code:"200" msg:"请求成功！"===========================
        /**
         * 方法名称：getTrue
         * 方法描述：成功消息 msg:请求成功！ code:"200" success：true
         */
        fun getTrue(): Map<String, Any> {
            val map = HashMap<String, Any>()
            map[SUCCESS] = SUCCESS_SUCCESS
            map[CODE] = CODE_SUCCESS
            map[MSG] = MSG_SUCCESS
            return map
        }

        /**
         * 方法名称：getTrue
         * 方法描述：请求成功 msg：传入 code：200 success：true
         */
        fun getTrue(msg: String): Map<String, Any> {
            val map = HashMap<String, Any>()
            map[SUCCESS] = SUCCESS_SUCCESS
            map[CODE] = CODE_SUCCESS
            map[MSG] = msg
            return map
        }

        /**
         * 方法名称：getFalse
         * 方法描述：成功消息 msg:请求失败！ code:"500" success：false
         */
        fun getFalse(): Map<String, Any> {
            val map = HashMap<String, Any>()
            map[SUCCESS] = SUCCESS_ERROR
            map[CODE] = CODE_ERROR
            map[MSG] = MSG_ERROR
            return map
        }

        /**
         * 方法名称：getFalse
         * 方法描述：请求失败 msg：传入 code：500 success：false
         */
        fun getFalse(msg: String): Map<String, Any> {
            val map = HashMap<String, Any>()
            map[SUCCESS] = SUCCESS_ERROR
            map[CODE] = CODE_ERROR
            map[MSG] = msg
            return map
        }

        /**
         * 自定义信息
         * getCode
         */
        fun getCode(msg: String, code: String): Map<String, Any> {
            val map = HashMap<String, Any>()
            map[CODE] = code
            map[MSG] = msg
            return map
        }

        /**
         * 自定义信息
         * getCustom
         */
        fun getCustom(msg: String, success: Boolean): Map<String, Any> {
            val map = HashMap<String, Any>()
            map[SUCCESS] = success
            map[MSG] = msg
            if (success) {
                map[CODE] = CODE_SUCCESS
            } else {
                map[CODE] = CODE_ERROR
            }
            return map
        }
    }

}